import axiosHttp from '@/libs/request';
import { Menu, MatchItem, KeyValue, Page } from '@/model';

/**
 * 获取菜单权限树结构
 */
const getPermissionTree = () => {
  return axiosHttp.post<Array<Menu>>('/admin/permission/tree');
};

/**
 * 获取菜单权限树结构，只有启用的权限，未启用的已被过滤
 * @param data 检索条件
 */
const getPermissionTree1 = (data: Array<MatchItem>) => {
  return axiosHttp.post<Array<Menu>>('/admin/permission/tree1', data);
};

/**
 * 获取权限列表，这里只有权限名称和权限id
 */
const getPermissionList = () => {
  return axiosHttp.get<Array<KeyValue>>('/admin/permission/list');
};

/**
 * 删除一个权限信息
 * @param id 权限信息id
 */
const deletePermission = (id: string) => {
  return axiosHttp.delete<void>('/admin/permission/delete', { id });
};

/**
 * 新建一个权限信息
 * @param data 权限信息
 */
const createPermission = (data: Menu) => {
  return axiosHttp.post<void>('/admin/permission/create', data);
};

/**
 * 编辑更新一个权限信息
 * @param data 权限信息
 */
const updatePermission = (data: Menu) => {
  return axiosHttp.post<void>('/admin/permission/update', data);
};

/**
 * 分页
 * @param data 分页对象，检索条件
 */
const pagePermission = (data: Page<Menu>) => {
  return axiosHttp.post<Page<Menu>>('/admin/permission/page', data);
};

/**
 * 列表
 */
const listChildPermission = (id: string) => {
  return axiosHttp.get<Array<Menu>>('/admin/permission/listByParentId', { id });
};

export {
  getPermissionTree,
  getPermissionList,
  deletePermission,
  createPermission,
  updatePermission,
  getPermissionTree1,
  pagePermission,
  listChildPermission,
};
